package high.concurrent.service;

import high.concurrent.dto.MsgDto;
import high.concurrent.model.TxMsg;

import java.util.List;

/**
 * Author 黄保泽
 * 描述 :
 */
public interface TxMsgService {


    /**
     * 创建消息数据，并且状态默认是未发送
     */
    MsgDto createMsgDataByMsgService(MsgDto txMsgDTO);

    /**
     * 根据msgId更改消息数据状态为已发送
     * @param msgId 消息id(全局唯一id)
     */
    void updateMsgDataByMsgService(String msgId);

    /**
     * 通过MsgId，删除数据，
     * @param txMsgDTO
     */
    void delMsgDataByOrderNo(MsgDto txMsgDTO);

    /**
     * 消息服务定期轮询，过期的“已发送”消息（过期一般是根据业务规则来自行调整，例如2min）（查已发送的定时器）
     * @param verdueTime 轮询间隔
     * @return
     */
    List<TxMsg> selectOverdueMsgBySend(int verdueTime);

    /**
     * 定时器轮询过期“待发送”状态的消息（过期消息一般是根据业务规则自行调整，例如 2min）（查待发送的定时器）
     * @param verdueTime 轮询间隔
     * @return
     */
    List<TxMsg> selectOverdueMsgByNotSend(int verdueTime);


}
